﻿using System;
using System.Collections.Generic;

namespace FolderSynchronizer
{
	/// <summary>
	/// Конфигуратор синхронизации.
	/// </summary>
	public struct SynchronizerSettings
	{
		/// <summary>
		/// Путь к исходному каталогу
		/// </summary>
		public string SourceFolder { get; set; }

		/// <summary>
		/// Путь к конечному каталогу.
		/// </summary>
		public string TargetFolder { get; set; }

		/// <summary>
		/// Массив путей к каталогам, которые необходимо очистить перед копированием.
		/// </summary>
		public string[] PureFolders { get; set; }

		/// <summary>
		/// Массив путей к каталогам в конечном каталоге, которые нельзя изменять при копировании.
		/// </summary>
		public string[] ExcludeFolders { get; set; }

		/// <summary>
		/// Массив путей к файлам в исходном каталоге, которые нельзя копировать.
		/// </summary>
		public string[] ExcludeFiles { get; set; }

		/// <summary>
		/// Список файлов для копирования.
		/// </summary>
		public List<FileInformation> FilesForCopy { get; set; }

		/// <summary>
		/// Полность ли совпадают две папки после копирования
		/// </summary>
		public bool FullMatchDirectories { get; set; }

		/// <summary>
		/// Путь к файлу с информацией о файлах в релизе.
		/// </summary>
		public string CheckSumFile { get; set; }

        /// <summary>
        /// Делегат прогресс - бара.
        /// </summary>
        public SynchronizeProgress Bar { get; set; }

        /// <summary>
        /// Событие отмены.
        /// </summary>
        public Action ThrowIfCancellationRequested { get; set; }

        /// <summary>
        /// Событие : Файлы скопированы в промежуточный каталог.
        /// </summary>
        public Action InTempFolder { get; set; }
	}
}
